The following example demonstrates how to retrieve a DataRow (container) for a data item using the GetContainerFromItem method. It is important to remember that data rows are virtualized; therefore, references to them or their cells should never be kept.
VB.NET |
Copy Code |
---|---|
Public Sub New() InitializeComponent() Dim grid As New DataGridControl() Dim view As New DataGridCollectionView( App.Orders.DefaultView ) grid.ItemsSource = view ' Subscribe to the PropertyChanged event to know when the CurrentItem property changes. AddHandler grid.PropertyChanged, AddressOf grid_PropertyChanged Me.Content = grid End Sub Private Sub grid_PropertyChanged( ByVal sender As Object, _ ByVal e As System.ComponentModel.PropertyChangedEventArgs ) If e.PropertyName = "CurrentItem" Then ' Retrieve the data-row container for the current item. Can be Nothing if the data item ' is not in the viewport. Dim grid As DataGridControl = CType( sender, DataGridControl ) Dim row As Xceed.Wpf.DataGrid.DataRow = TryCast( grid.GetContainerFromItem( grid.CurrentItem ), Xceed.Wpf.DataGrid.DataRow ) ' Change the background of the data row to pink. Data rows are recycled once they ' exit the viewport; therefore, any modifications made to a data row will ' be discarded once it is no longer in the viewport. row.Background = Brushes.Pink End If End Sub |
C# |
Copy Code |
---|---|
public Window1() { InitializeComponent(); DataGridControl grid = new DataGridControl(); DataGridCollectionView view = new DataGridCollectionView( App.Orders.DefaultView ); grid.ItemsSource = view; // Subscribe to the PropertyChanged event to know when the CurrentItem property changes. grid.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler( grid_PropertyChanged ); this.Content = grid; } void grid_PropertyChanged( object sender, System.ComponentModel.PropertyChangedEventArgs e ) { if( e.PropertyName == "CurrentItem" ) { // Retrieve the data-row container for the current item. Can be null if the data item // is not in the viewport. DataGridControl grid = sender as DataGridControl; Xceed.Wpf.DataGrid.DataRow row = grid.GetContainerFromItem( grid.CurrentItem ) as Xceed.Wpf.DataGrid.DataRow; // Change the background of the data row to pink. Data rows are recycled once they // exit the viewport; therefore, any modifications made to a data row will // be discarded once it is no longer in the viewport. row.Background = Brushes.Pink; } } |